package com.punch.course.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.punch.common.enums.course.ClassAuditEnum;
import com.punch.common.enums.course.GradeEnum;
import com.punch.common.model.SuperEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * PunchClass-班级
 *
 * @author xiaol
 * @version 1.0.0
 * @since 2020/7/18 10:00
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("punch_class")
@Deprecated
public class PunchClass extends SuperEntity<PunchClass> {

    private static final long serialVersionUID = 1L;

    /**
     * 班级名称
     */
    @TableField("class_name")
    private String className;

    /**
     * 开班日期
     */
    @TableField("class_open_date")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate classOpenDate;

    /**
     * 真正开班日期
     */
    @TableField("class_real_open_date")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate classRealOpenDate;


    /**
     * 报名开始时间
     */
    @TableField("regist_start_time")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate registStartTime;

    /**
     * 报名结束时间
     */
    @TableField("regist_end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime registEndTime;

    /**
     * 对应的课程id   单选
     */
    @TableField("course_id")
    private Long courseId;

    /**
     * 课程创建者Id
     */
    @TableField("course_create_id")
    private Long courseCreateId;

    /**
     * 课程创建者姓名
     */
    @TableField("course_create_name")
    private String courseCreateName;

    /**
     * 对应的课程name  单选
     */
    @TableField("course_name")
    private String courseName;
    /**
     * 课程分类  单选 (0-素质课、1-社团课、2-托管班...)
     */
    @TableField("course_classifi")
    private Integer courseClassifi;


    /**
     * 课程类目id
     */
    @TableField("course_category_id")
    private String courseCategoryId;

    /**
     * 课程类目名称
     */
    @TableField("course_category_name")
    private String courseCategoryName;


    /**
     * 适用年级  同课程适用年级 1-6年级多选,使用枚举
     * {@link GradeEnum}
     */
    @TableField("course_grade")
    private String courseGrade;

    /**
     * 单选，选项：0基础、1进阶、2高级
     */
    @TableField("course_level")
    private Integer courseLevel;

    /**
     * 星期几，多选
     */
    @TableField("course_week")
    private String courseWeek;

    /**
     * 课时数
     */
    @TableField("course_hour_count")
    private Integer courseHourCount;

    /**
     * 已完成课时数
     */
    @TableField("course_finish_count")
    private Integer courseFinishCount;
    /**
     * 课时单价：单位元，精度两位小数
     */
    @TableField("course_hour_price")
    private BigDecimal courseHourPrice;

    /**
     * 课程总价：单位元，精度两位小数
     */
    @TableField("course_total_price")
    private BigDecimal courseTotalPrice;
    /**
     * 是否包含教材/教具：勾选框，默认否  0否  1是
     */
    @TableField("contain_material_flag")
    private Integer containMaterialFlag;
    /**
     * 教材名称/教具名称
     */
    @TableField("course_material_name")
    private String courseMaterialName;
    /**
     * 教材/教具单价
     */
    @TableField("course_material_price")
    private BigDecimal courseMaterialPrice;
    /**
     * 是否必须购买：勾选框，默认否    0否  1是
     */
    @TableField("require_buy_flag")
    private Integer requireBuyFlag;

    /**
     * 供应商id,只有包含教具的时候才需要指定供应商
     */
    @TableField("supplier_id")
    private Long supplierId;

    /**
     * 供应商名称,只有包含教具的时候才需要指定供应商
     */
    @TableField("supplier_name")
    private String supplierName;
    /**
     * 课程介绍
     */
    @TableField("course_introduce")
    private String courseIntroduce;

    /**
     * 上课时间
     */
    @TableField("class_time")
    private String classTime;

    /**
     * 上课教室id  单选非禁用教室
     */
    @TableField("class_room_id")
    private Long classRoomId;
    /**
     * 上课教室名称
     */
    @TableField("class_room_name")
    private String classRoomName;
    /**
     * 最少上课人数
     */
    @TableField("stu_no_min")
    private Integer stuNoMin;
    /**
     * 最多上课人数
     */
    @TableField("stu_no_max")
    private Integer stuNoMax;

    /**
     * 报名人数
     */
    @TableField("sign_up_number")
    private Integer signUpNumber;

    /**
     * 上课老师id
     */
    @TableField("teacher_id")
    private Long teacherId;
    /**
     * 上课老师名称
     */
    @TableField("teacher_name")
    private String teacherName;

    /**
     * 机构id
     */
    @TableField("organ_id")
    private Long organId;

    /**
     * 机构id
     */
    private String orgNo;

    /**
     * 禁用状态  0：禁用  1启用
     */
    @TableField("enabled")
    private Integer enabled;

    /**
     * 班级状态：
     * 0 待报名
     * 1 报名中
     * 2 已开班
     * 3 取消报名
     * 4 已完成
     * {@link ClassAuditEnum}
     */
    @TableField("class_state")
    private Integer classState;

    /**
     * uid
     */
    @TableField("create_id")
    private Long createId;

    /**
     * createName
     */
    @TableField("create_name")
    private String createName;
    /**
     * 所属地区ID
     */
    @TableField("area_id")
    private Integer areaId;
    /**
     * 所属地区Name
     */
    @TableField("area_name")
    private String areaName;
    /**
     * 课程结算状态 0-未结算 1-已结算(因为课程是月结) 2-结算完成
     */
    @TableField("settlement_status")
    private Long settlementStatus;

}
